航行日志

SAE上部署Django (Mac OSX)

转自:http://765i.cn/sae上部署django-mac-osx/

Deploying Django on SAE (Mac OSX)

Sina App Engine(简称SAE)是新浪研发中心推出的国内首个公有云计算平台,支持PHP,MySQL,Memcached,Mail,TaskQueue,RDC(关系型数据库集群), KVDB(非关系型数据库)等服务。我的博客就是假设在SAE上的,云平台的好处就是省去了自己搭建环境、维护服务的时间,而且根据你自己服务的使用公共资源的多少来收费。用户第一次注册的时候赠送一定量的资源,而且还可以通过认证来获得更多的免费资源。更多关于SAE
新浪云平台

最近SAE开放了了Python的测试,好不容易通过了申请,虽然已经很早了,但是还是很兴奋的。最近在学习Django,就赶快尝试着部署一个Django到SAE。

第一部分

现在就开始吧,先看看在本地环境需要做些什么
1.为SAE项目创建一个目录,把我们需要的一切都放在这里
mkdir sae-django
cd sae-django

2.创建一个虚拟环境
我们要知道为什么需要创建一个虚拟环境

如果你和我一样,在做Django应用开发中喜欢使用一些Django第三方扩展来进行Django的快速开发,那么可能就会在自己的Linux系统中的Python目录中大量的安装过一些扩展库了,但A应用用到的扩展B应用又不一定需要用到。当然一个应用开发完成,可以需要写一些安装手册这类的,这时你可能会有些茫然,到底哪些扩展是自己这个应用所用到的?这样看来一个“干净”的开发环境还是很有必要的。

利用Virtualenv能快速的搞定这样一个开发环境,事实上不仅仅是Django需要,你在做任何Python开发的的时候,都可以考虑做这么一个“干净”的虚拟环境来进行开发,这样就不必担心搞乱自己的Python主目录时的库程序了。具体而言,做这么一个开发环境,可能会需要用到pip,virtualenv,easy_install。
来看看MacOSX下是怎么来安装我们需要的这些工具。我用的是Lion,Mac有一个默认的工具easy_install用来安装各种Package。

a. 安装virtualenv。
用管理员权限进行安装,命令:
sudo easy_install virtualenv
这步完成后,以后就可以进接使用virtualenv来进行Python开发环境的创建了。
b. 环境创建
virtualenv mysite
会得到下面的返回结果
New python executable in mysite/bin/python
Installing setuptools…………done.
Installing pip……………done.
这时会在mysite目录中生成三个Python所需的目录。

c.启用虚拟环境
进入mysite目录,执行:
source bin/activate
这里你会发现原来的命令提示符发生了变化,多了一个括号,里面的字符即为你所创建的虚拟环境的名称。接下来的所有模块的安装,都只会直接安装到项目目录中去。

前期的准备工作就完成了,接下来就看看怎么安装django,并把django部署到SAE上吧

第二部分

4. 准备部署到SAE

a.我们首先是要在SAE上创建新的应用

http://sae.sina.com.cn/?m=myapp&a=create

b.在本地检出SVN代码(mydjangoapp),就在一开始创建的sae-django目录下
svn co https://svn.sinaapp.com/mydjango
c.建立一个数字为目录名的版本目录
mkdir 1
cd 1
d.新建文件index.wsgi,内容如下

import os
import django.core.handlers.wsgi
import sae
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_first_django.settings'
application = sae.create_wsgi_app(django.core.handlers.wsgi.WSGIHandler())

e.安装Django
使用PIP进行Django的安装,SAE当前仅支持1.2.7。
当前我们还是在虚拟环境下,执行命令:
pip install django==1.2.7
安装完成后即可进行项目的开发工作了。
PIP有一个很不错的功能,可使用该功能来自己生成项目安装的扩展,而其他用户在使用你的应用的时候,也可以方便的通过这种方式,完成扩展的再次安装。
a.扩展生成:
pip freeze > prj.txt
会在当前目录中生成这样一个文本文件,包含扩展名及相应的版本号。
b.下次进行安装
pip install -r prj.txt
自动装所有模块一次些安装完成。
需要注意的是,你每次开始继续开发项目的时候,都需要使用source进入到虚拟环境后才可以正确的进行项目的开发。
f.初始化django应用:
django-admin.py startproject my_first_django
g. SAE需要从django安装目录复制admin的media目录到版本目录下, django的安装路径是
mysite/lib/python2.7/site-packages
cp -rf django/contrib/admin/media/ .

最后的目录结构是在sae-django下
mydjango/ mysite/
——————————-
1/
——————————-
index.wsgi media my_first_django

h. 提交代码
访问 http://$yourappname.sinaapp.com ,就可看到Django的欢迎页面了。